﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;
using DataAccessLayer;

namespace Entities
{
    [TableName("ChiTietKeHoachGiangDay")]
    public class ChiTietKeHoachGiangDay : BaseEntity<ChiTietKeHoachGiangDay>
    {
        /// <summary>
        /// Lấy và gán mã kế hoạch
        /// </summary>
        [MapField("MaKH"), PrimaryKey]
        public string MaKH { get; set; }

        /// <summary>
        /// Lấy và gán mã lớp
        /// </summary>
        [MapField("MaLop")]
        public string MaLop { get; set; }

        /// <summary>
        /// Lấy và gán ghép lớp
        /// </summary>
        [MapField("GhepLop")]
        public string GhepLop { get; set; }

        [MapField("MaMH")]
        public string MaMH { get; set; }

        /// <summary>
        /// lấy và gán mã giáo viên
        /// </summary>
        [MapField("MaGV")]
        public string MaGV { get; set; }

        /// <summary>
        /// lấy và gán mã quản lý
        /// </summary>
        [MapField("MaQL")]
        public string MaQL { get; set; }


        /// <summary>
        /// lấy mã môn học nhưng hiển thị tên môn học
        /// </summary>
        [MapIgnore]
        public string TenMonHoc
        {
            get
            {
                MonHoc mh = MonHoc.Repository.GetByID(MaMH);
                if (mh != null) return mh.TenMH;
                return "";
            }
        }

        /// <summary>
        /// lấy tổng số tín chỉ
        /// </summary>
        [MapIgnore]
        public int STC
        {
            get
            {
                MonHoc mh = MonHoc.Repository.GetByID(MaMH);
                if (mh != null) return mh.STC;
                return 0;
            }
        }

        /// <summary>
        /// lấy số tín chỉ lý thuyết
        /// </summary>
        [MapIgnore]
        public int SoTCLyThuyet
        {
            get
            {
                MonHoc mh = MonHoc.Repository.GetByID(MaMH);
                if (mh != null) return mh.SoTCLT;
                return 0;
            }
        }

        /// <summary>
        /// lấy số tín chỉ thực hành
        /// </summary>
        [MapIgnore]
        public int SoTCThucHanh
        {
            get
            {
                MonHoc mh = MonHoc.Repository.GetByID(MaMH);
                if (mh != null) return mh.SoTCTH;
                return 0;
            }
        }

        /// <summary>
        /// lấy mã giáo viên nhưng hiển thị tên giáo viên
        /// </summary>
        [MapIgnore]
        public string TenGiaoVien
        {
            get
            {
                GiaoVien gv = GiaoVien.Repository.GetByID(MaGV);
                if (gv != null) return gv.TenGV;
                return "";
            }
        }

       
        /// <summary>
        /// lấy và gán số tiết lý thuyết đã dạy
        /// </summary>
        [MapField("SoTietLTDaDay")]
        public int SoTietLTDaDay { get; set; }

        /// <summary>
        /// lấy và gán số tiết lý thuyết còn lại
        /// </summary>
        [MapField("SoTietLTConLai")]
        public int SoTietLTConLai { get; set; }

        /// <summary>
        /// lấy và gán số tiết thực hành đã dạy
        /// </summary>
        [MapField("SoTietTHDaDay")]
        public int SoTietTHDaDay { get; set; }

        /// <summary>
        /// lấy và gán số tiết thực hành còn lại
        /// </summary>
        [MapField("SoTietTHConLai")]
        public int SoTietTHConLai { get; set; }

        /// <summary>
        /// lấy và gán số tuần còn lại
        /// </summary>
        [MapField("SoTuanConLai")]
        public int SoTuanConLai { get; set; }

        

    }
}
